$(async function () {
    mapTool.init();
    //默认选中风场模式
    $('.menu-item .bg-circle').removeClass('bg-circle-active')
    $(".item-wind .bg-circle").addClass('bg-circle-active')
    //风场
    $(".item-wind").on('click', function () {
        if (mapTool.map.hasLayer(mapTool.windLayer)) {
            mapTool.map.removeLayer(mapTool.windLayer);
            $(".item-wind .bg-circle").removeClass('bg-circle-active')
            return;
        } else {
            $(".item-wind .bg-circle").addClass('bg-circle-active')
        }
        mapTool.drawWindLayer();
    });
    //温度
    $(".item-temp").on('click', function () {
        if (mapTool.map.hasLayer(mapTool.tempLayer)) {
            mapTool.removeLegendFromMap('temperature')
            mapTool.initSingleLayer();
            return;
        }
        mapTool.initSingleLayer();
        $(".item-temp .bg-circle").addClass('bg-circle-active')
        mapTool.drawTempLayer();
        
    });
    //湿度
    $(".item-humidity").on('click', function () {
        if (mapTool.map.hasLayer(mapTool.humidityLayer)) {
            mapTool.initSingleLayer();
            return;
        }
        mapTool.initSingleLayer();
        $(".item-humidity .bg-circle").addClass('bg-circle-active')
        mapTool.drawHumidityLayer();
        
    });
    //降水
    $(".item-precipitation").on('click', function () {
        if (mapTool.map.hasLayer(mapTool.precipitationLayer)) {
            mapTool.initSingleLayer();
            return;
        }
        mapTool.initSingleLayer();
        $(".item-precipitation .bg-circle").addClass('bg-circle-active')
        mapTool.drawPrecipitationLayer();

    });
    //风速
    $(".item-wind-speed").on('click', function () {
        if (mapTool.map.hasLayer(mapTool.windSpeedLayer)) {
            mapTool.initSingleLayer();
            return;
        }
        mapTool.initSingleLayer();
        $(".item-wind-speed .bg-circle").addClass('bg-circle-active')
        mapTool.drawWindSpeedLayer();

    });
    //云量
    $(".item-cloud").on('click', function () {
        if (mapTool.map.hasLayer(mapTool.cloudLayer)) {
            mapTool.initSingleLayer();
            return;
        }
        mapTool.initSingleLayer();
        $(".item-cloud .bg-circle").addClass('bg-circle-active')
        mapTool.drawCloudLayer();

    })
    //气压
    $(".item-pressure").on('click', function (){
        if (mapTool.map.hasLayer(mapTool.pressureLayer)) {
            mapTool.initSingleLayer();
            return;
        }
        mapTool.initSingleLayer();
        $(".item-pressure .bg-circle").addClass('bg-circle-active')
        mapTool.drawPressureLayer();
        
    })
    //纯净
    $(".item-pure").on('click', function () {
        $('.menu-item .bg-circle').removeClass('bg-circle-active')
        $(".item-pure .bg-circle").addClass('bg-circle-active')
        if (mapTool.map.hasLayer(mapTool.windLayer)) {
            mapTool.map.removeLayer(mapTool.windLayer);
        }
        mapTool.initSingleLayer()
    });
    //成果
    $(".item-result").on('click', function () {
        if (mapTool.map.hasLayer(mapTool.resultLayer)) {
            mapTool.initSingleLayer();
            return;
        }
        mapTool.initSingleLayer();
        $(".item-result .bg-circle").addClass('bg-circle-active')
        mapTool.drawResultLayer();
    });
    

});
/**
 * map
 */
var mapTool = {
    map: null,
    legend: null,
    windLayer: null,
    tempLayer: null,
    humidityLayer: null,
    precipitationLayer: null,
    cloudLayer: null,
    pressureLayer: null,
    windSpeedLayer: null,
    resultLayer:null,
    layer:null,
    timeplay: null,
    haveDataStart: new Date(2024, 11, 20, 0),
    haveDataEnd: new Date(2024, 11, 22, 23),
    currentDate: new Date(2024, 11, 20, 0),
    dateRange: getStartAndEndDay(),
    historyResult: {},
    init: async function () {
        // 初始化地图，设置中心点和缩放级别
        var chinaBounds = L.latLngBounds(
            [[18.1542, 73.5431], // 西南角坐标（纬度最小值，经度最小值）
            [53.5542, 135.0542]] // 东北角坐标（纬度最大值，经度最大值）
        );
        mapTool.map = L.map('map', {
            center: [35.8617, 104.1954], // 设置地图中心点为中国的地理中心附近
            zoom: 5, // 初始缩放级别
            minZoom: 5, // 用户不能缩小到低于此缩放级别
            maxZoom: 12,
            maxBounds: chinaBounds,
            maxBoundsViscosity: 1.0 // 防止地图平移出界，1.0 表示完全禁止
        }).fitBounds(chinaBounds); // 根据边界自动调整缩放级别

        // 加载底图
        L.tileLayer(
            'https://gfapi.mlogcn.com/visLayer/v001/terrain?level={z}&x={x}&y={y}&key=1mfZDdhGQ2cPqz9req3wAUUVTnU1CMPQ',
            {
                zIndex: 6
            }).addTo(mapTool.map);
        // 添加中国边界
        var chinaBoundary = await mapTool.fetchChinaBoundary();
        console.log(chinaBoundary)
        // 创建 China 图层并添加到地图
        L.geoJSON(chinaBoundary, {
            style: function (feature) {
                return {
                    color: "#00006B", // 边界颜色
                    weight: 3,       // 线条宽度（稍微加粗以突出显示）
                    opacity: 0.85,   // 线条透明度（稍微不透明）
                    fillColor: '#ADD8E6', // 填充颜色（可选，如果需要填充内部区域）
                    fillOpacity: 0.1 // 填充透明度（较低值，避免遮挡底图）
                };
            }
        }).addTo(mapTool.map);
        //layers
        mapTool.windLayer = L.velocityLayer({
            colorScale: ["#fff"]
        });
        mapTool.drawWindLayer();
        mapTool.tempLayer = L.scaleLayer({
            opacity: 0.7 
        });
        mapTool.humidityLayer = L.scaleLayer({
            opacity: 0.7 
        });
        mapTool.precipitationLayer = L.scaleLayer({
            opacity: 0.7
        });
        mapTool.cloudLayer = L.scaleLayer({
            opacity: 0.7
        });
        mapTool.pressureLayer = L.scaleLayer({
            opacity: 0.7
        });
        mapTool.windSpeedLayer = L.scaleLayer({
            opacity: 0.7
        });
        mapTool.resultLayer = L.scaleLayer({
            opacity: 0.7
        });

    },
    drawHistoryData: function () {
        $("#progressTime").attr("style", "display: flex;");
        //历史数据
        if (mapTool.timeplay) {
            return;
        }
        var hour = this.currentDate.getHours(),//小时
            day = this.currentDate.getDate(),//日
            mon = this.currentDate.getMonth() + 1,//月
            year = this.currentDate.getFullYear();//年
        var str = year + "年" + mon + "月" + day + "日" + hour + "时";
        $(".timeInfo span").text(str)
        mapTool.timeplay = new TimePlay({
            speed: 2000,//播放速度
            startDate: this.dateRange[0],//开始日期
            endDate: this.dateRange[this.dateRange.length - 1],//结束日期
            currentData: this.currentDate,//this.dateRange[0],//初始化时间
            backToday: true,//是否显示返回今天按钮
            timeUnitControl: false,//是否显示时/天切换控件
            onClickChangeEnd: function (time) {//点击后回调
                // console.log("change:", time)
                mapTool.currentDate = time;
                //获取点击的时间
                var hour = time.getHours(),//小时
                    day = time.getDate(),//日
                    mon = time.getMonth() + 1,//月
                    year = time.getFullYear();//年
                var str = year + "年" + mon + "月" + day + "日" + hour + "时";
                $(".timeInfo span").text(str)
                mapTool.changeDataLayer(time)
            },
            onAnimateEnd: function (time) {//时间轴动画每次结束回调
                var hour = time.getHours(),//小时
                    day = time.getDate(),//日
                    mon = time.getMonth() + 1,//月
                    year = time.getFullYear();//年
                var str = year + "年" + mon + "月" + day + "日" + hour + "时";
                if (hour % 2 == 0) {
                    return;
                }
                $(".timeInfo span").text(str);
                mapTool.currentDate = time;
                // console.log("now ================" + time)
                type = $("#historyDataType").val();
                mapTool.changeDataLayer(time)
            }
        });
    },
    changeDataLayer: function (time) {
        // 改变图层的逻辑
        console.log('Changing layer for time:', toLocalISOString(time));
        var type = $("#historyDataType").val();
        var point = toLocalISOString(time);
        var data = mapTool.historyResult[type];
        var product = L.windUtil().options.products[type]
        // console.log(type)
        // console.log(product)
        if (data[point]) {
            console.log("更新"+product['title']+"数据")
            var s = L.ScalarField.fromPNGGrid(data[point][0]);
            mapTool.layer.setData(s, product);
            // mapTool.layer.addTo(mapTool.map)
        }else{
            showMessage("err",toLocalISOString(mapTool.currentDate)+": 没有获取到"+product['title']+"数据")
        }
        //如果此时绘有风场，时间更该，修改风场数据
        if (mapTool.map.hasLayer(mapTool.windLayer)) {
            var historyWindData =mapTool.historyResult.wind
            console.log(point);
            if(historyWindData[point]){
                mapTool.windLayer.setData(historyWindData[point]);
                console.log("带有风场图层，更新风场数据")
            }else{
                showMessage("err",toLocalISOString(mapTool.currentDate)+": 带有风场图层，但没有获取到风场数据")
            }
        }

    },
    drawWindLayer: function () {
        var wind_info = L.windUtil().options.products["wind"];
        // 风场数据加载
        L.windUtil().getImgData(mapTool.currentDate, wind_info, function (res) {
            if(!res){
                showMessage("err",toLocalISOString(mapTool.currentDate)+": 没有获取到风场数据");
                return;
            }
            mapTool.windLayer.setData(res);
            mapTool.windLayer.addTo(mapTool.map);
            var type = wind_info.type
            if (Object.keys(mapTool.historyResult).length === 0) {
                mapTool.getHistoryDatas(wind_info);
            } else if(typeof(mapTool.historyResult[type])==='undefined') {
                mapTool.getHistoryDatas(wind_info);
            } else {
                console.log('hostoryResult已有值');
            }
            console.log(mapTool.historyResult);
            
        });
        
    },
    drawTempLayer: function () {
        var tempproduct = L.windUtil().options.products["temp"]
        var tempscale = chroma.scale(tempproduct.color).domain(tempproduct.range);
        //温度图层数据加载
        L.windUtil().getImgData(mapTool.currentDate, tempproduct, function (res) {
            if(!res){
                showMessage("err",toLocalISOString(mapTool.currentDate)+": 没有获取到温度数据")
                return;
            }
            var s = L.ScalarField.fromPNGGrid(res[0]);
            mapTool.tempLayer.setColor(tempscale);
            mapTool.tempLayer.setData(s, tempproduct);
            mapTool.tempLayer.addTo(mapTool.map);
            mapTool.addLayerAndRestoreSettings();
            var temperaturesKelvin = tempproduct.range;
            var range = temperaturesKelvin.map(function (temp) {
                return temp - 273.15;
            });
            var type = tempproduct.type;
            mapTool.addLegendToMap(range, '°C', type);
            //历史数据播放显示
            $("#progressTime").attr("style", "display: flex;");
            $("#historyDataType").val(type);
            if (Object.keys(mapTool.historyResult).length === 0) {
                mapTool.getHistoryDatas(tempproduct);
            } else if(typeof(mapTool.historyResult[type])==='undefined') {
                mapTool.getHistoryDatas(tempproduct);
            } else {
                console.log('hostoryResult已有值');
            }
            mapTool.layer = mapTool.tempLayer;
            mapTool.drawHistoryData();
        });

    },
    drawHumidityLayer: function () {
        var humidityproduct = L.windUtil().options.products["relative_humidity"];
        var humidScale = chroma.scale(humidityproduct.color).domain(humidityproduct.range);
        L.windUtil().getImgData(mapTool.currentDate, humidityproduct, function (res) {
            if(!res){
                showMessage("err",toLocalISOString(mapTool.currentDate)+": 没有获取到湿度数据")
                return;
            }
            var s = L.ScalarField.fromPNGGrid(res[0]);
            mapTool.humidityLayer.setColor(humidScale);
            mapTool.humidityLayer.setData(s, humidityproduct);
            mapTool.humidityLayer.addTo(mapTool.map);
            mapTool.addLayerAndRestoreSettings();
            var type = humidityproduct.type;
            mapTool.addLegendToMap(humidityproduct.range, '%', type);
            //历史数据播放显示
            $("#progressTime").attr("style", "display: flex;");
            $("#historyDataType").val(type);
            if (Object.keys(mapTool.historyResult).length === 0) {
                mapTool.getHistoryDatas(humidityproduct);
            } else if(typeof(mapTool.historyResult[type])==='undefined') {
                mapTool.getHistoryDatas(humidityproduct);
            } else {
                console.log('hostoryResult已有值');
            }
            console.log(mapTool.historyResult)
            mapTool.layer = mapTool.humidityLayer;
            mapTool.drawHistoryData();

        })
    },
    drawPrecipitationLayer:function(){
        var precipitationProduct = L.windUtil().options.products["precipitation"];
        var precipitationScale = chroma.scale(precipitationProduct.color).domain(precipitationProduct.range);
        L.windUtil().getImgData(mapTool.currentDate, precipitationProduct, function (res) {
            if(!res){
                showMessage("err",toLocalISOString(mapTool.currentDate)+": 没有获取到降水数据")
                return;
            }
            var s = L.ScalarField.fromPNGGrid(res[0]);
            mapTool.precipitationLayer.setColor(precipitationScale);
            mapTool.precipitationLayer.setData(s, precipitationProduct);
            mapTool.precipitationLayer.addTo(mapTool.map);
            mapTool.addLayerAndRestoreSettings();
            var type = precipitationProduct.type;
            mapTool.addLegendToMap(precipitationProduct.range, 'mm', type);
            //历史数据播放显示
            $("#progressTime").attr("style", "display: flex;");
            $("#historyDataType").val(type);
            if (Object.keys(mapTool.historyResult).length === 0) {
                mapTool.getHistoryDatas(precipitationProduct);
            } else if(typeof(mapTool.historyResult[type])==='undefined') {
                mapTool.getHistoryDatas(precipitationProduct);
            } else {
                console.log('hostoryResult已有值');
            }
            console.log(mapTool.historyResult)
            mapTool.layer = mapTool.precipitationLayer;
            mapTool.drawHistoryData();

        })
    },
    drawWindSpeedLayer: function () {
        var speedProduct = L.windUtil().options.products["wind_speed"];
        var speedScale = chroma.scale(speedProduct.color).domain(speedProduct.range);
        L.windUtil().getImgData(mapTool.currentDate, speedProduct, function (res) {
            if(!res){
                showMessage("err",toLocalISOString(mapTool.currentDate)+": 没有获取到风速数据")
                return;
            }
            var s = L.ScalarField.fromPNGGrid(res[0]);
            mapTool.windSpeedLayer.setColor(speedScale);
            mapTool.windSpeedLayer.setData(s, speedProduct);
            mapTool.windSpeedLayer.addTo(mapTool.map);
            mapTool.addLayerAndRestoreSettings();
            var type = speedProduct.type;
            mapTool.addLegendToMap(speedProduct.range, 'm/s', type);
            //历史数据播放显示
            $("#progressTime").attr("style", "display: flex;");
            $("#historyDataType").val(type);
            if (Object.keys(mapTool.historyResult).length === 0) {
                mapTool.getHistoryDatas(speedProduct);
            } else if(typeof(mapTool.historyResult[type])==='undefined') {
                mapTool.getHistoryDatas(speedProduct);
            } else {
                console.log('hostoryResult已有值');
            }
            console.log(mapTool.historyResult)
            mapTool.layer = mapTool.windSpeedLayer;
            mapTool.drawHistoryData();

        })
    },
    drawCloudLayer: function () {
        var cloudProduct = L.windUtil().options.products["cloud_cover"];
        var cloudScale = chroma.scale(cloudProduct.color).domain(cloudProduct.range);
        L.windUtil().getImgData(mapTool.currentDate, cloudProduct, function (res) {
            if(!res){
                showMessage("err",toLocalISOString(mapTool.currentDate)+": 没有获取到云量数据")
                return;
            }
            var s = L.ScalarField.fromPNGGrid(res[0]);
            mapTool.cloudLayer.setColor(cloudScale);
            mapTool.cloudLayer.setData(s, cloudProduct);
            mapTool.cloudLayer.addTo(mapTool.map);
            mapTool.addLayerAndRestoreSettings();
            var type = cloudProduct.type;
            mapTool.addLegendToMap(cloudProduct.range, '%', type);
            //历史数据播放显示
            $("#progressTime").attr("style", "display: flex;");
            $("#historyDataType").val(type);
            if (Object.keys(mapTool.historyResult).length === 0) {
                mapTool.getHistoryDatas(cloudProduct);
            } else if(typeof(mapTool.historyResult[type])==='undefined') {
                mapTool.getHistoryDatas(cloudProduct);
            } else {
                console.log('hostoryResult已有值');
            }
            console.log(mapTool.historyResult)
            mapTool.layer = mapTool.cloudLayer;
            mapTool.drawHistoryData();

        })
    },
    drawPressureLayer: function () {
        var pressureProduct = L.windUtil().options.products["pressure"];
        var pressureScale = chroma.scale(pressureProduct.color).domain(pressureProduct.range);
        L.windUtil().getImgData(mapTool.currentDate, pressureProduct, function (res) {
            if(!res){
                showMessage("err",toLocalISOString(mapTool.currentDate)+": 没有获取到气压数据")
                return;
            }
            var s = L.ScalarField.fromPNGGrid(res[0]);
            mapTool.pressureLayer.setColor(pressureScale);
            mapTool.pressureLayer.setData(s, pressureProduct);
            mapTool.pressureLayer.addTo(mapTool.map);
            mapTool.addLayerAndRestoreSettings();
            var type = pressureProduct.type;
            mapTool.addLegendToMap(pressureProduct.range, '%', type);
            //历史数据播放显示
            $("#progressTime").attr("style", "display: flex;");
            $("#historyDataType").val(type);
            if (Object.keys(mapTool.historyResult).length === 0) {
                mapTool.getHistoryDatas(pressureProduct);
            } else if(typeof(mapTool.historyResult[type])==='undefined') {
                mapTool.getHistoryDatas(pressureProduct);
            } else {
                console.log('hostoryResult已有值');
            }
            console.log(mapTool.historyResult)
            mapTool.layer = mapTool.pressureLayer;
            mapTool.drawHistoryData();

        })
    },
    drawResultLayer: async function () {
        // 先定位到指定的经纬度，并设置合适的缩放级别
        mapTool.map.setView([36.645, 116.949], 12); // 调整第二个参数以适应需要的缩放级别
        var product = L.windUtil().options.products["pollutant_conc"];
        var scale = chroma.scale(product.color).domain(product.range);
        // 确保在获取数据之前等待地图完成平移和缩放动画
        mapTool.map.whenReady(async function() {
            var res = await L.windUtil().getResultImgData(new Date(2024, 11, 19, 0), product);
            if (!res) {
                showMessage("err", toLocalISOString(mapTool.currentDate) + ": 没有获取到浓度数据");
                return;
            }
            console.log(res)
            var s = L.ScalarField.fromPNGGrid(res[0]);
            mapTool.resultLayer.setColor(scale);
            mapTool.resultLayer.setData(s, product);
            mapTool.resultLayer.addTo(mapTool.map);
            var type = product.type;
            mapTool.addLegendToMap(product.range, 'μg/m³', type);
        });
    },
    removeLayers:function(){
        if (mapTool.map.hasLayer(mapTool.tempLayer)) {
            mapTool.map.removeLayer(mapTool.tempLayer);
        }
        if (mapTool.map.hasLayer(mapTool.humidityLayer)) {
            mapTool.map.removeLayer(mapTool.humidityLayer);
        }
        if (mapTool.map.hasLayer(mapTool.precipitationLayer)) {
            mapTool.map.removeLayer(mapTool.precipitationLayer);
        }
        if (mapTool.map.hasLayer(mapTool.cloudLayer)) {
            mapTool.map.removeLayer(mapTool.cloudLayer);
        }
        if (mapTool.map.hasLayer(mapTool.pressureLayer)) {
            mapTool.map.removeLayer(mapTool.pressureLayer);
        }
        if (mapTool.map.hasLayer(mapTool.windSpeedLayer)) {
            mapTool.map.removeLayer(mapTool.windSpeedLayer);
        }
        if(mapTool.map.hasLayer(mapTool.resultLayer)){
            mapTool.map.removeLayer(mapTool.resultLayer);
        }

    },
    initSingleLayer: function () {
        this.removeLayers();
        $(".menu-item-single .bg-circle").removeClass('bg-circle-active');
        this.removeLegendFromMap("");
        mapTool.layer = null;
        
        $("#progressTime").attr("style", "display: none;");
    },
    addLegendToMap: function (range, units, type) {
        if (!mapTool.legend || !mapTool.map.hasLayer(mapTool.legend)) {
            mapTool.legend = L.control({ position: 'bottomleft' });
            mapTool.legend.onAdd = function () {
                var div = L.DomUtil.create('div', 'info legend');
                // 创建温度单位标签
                var unitLabel = document.createElement('div');
                unitLabel.className = 'legend-unit';
                unitLabel.textContent = units;
                // 温度条容器
                var legendBarContainer = document.createElement('div');
                legendBarContainer.className = 'legend-bar-container';
                // 创建温度条
                var legendBar = document.createElement('div');
                legendBar.className = type + '-bar';
                // 温度标签容器
                var labelsContainer = document.createElement('div');
                labelsContainer.className = 'legend-labels-container';
                // Add temperature labels with calculated positions, only for even indices
                for (var i = 0; i < range.length; i++) {
                    var roundedTemp = range[i];
                    if (range[i] < 1 && type != 'pollutant_conc') {
                        roundedTemp = range[i].toFixed(1);
                    }
                    if (type == 'temp') {
                        roundedTemp = Math.round(range[i] / 10) * 10;
                    }

                    var labelDiv = document.createElement('div');
                    labelDiv.className = 'legend-label';
                    labelDiv.textContent = `${roundedTemp}`; // Only the number
                    labelsContainer.appendChild(labelDiv);
                }
                legendBarContainer.appendChild(legendBar);
                legendBarContainer.appendChild(labelsContainer);
                div.appendChild(unitLabel);
                div.appendChild(legendBarContainer);
                return div;
            };

            mapTool.legend.addTo(mapTool.map);
            console.log(type + " legend added");
        }
    },
    removeLegendFromMap: function (type) {
        if (mapTool.legend) {
            // 移除图例控件
            mapTool.map.removeControl(mapTool.legend);
            // 或者使用以下方法，两者是等价的：
            // legend.remove();
            console.log(type + " legend removed")
        }
    },
    getHistoryDatas: async function (product) {
        var start = mapTool.haveDataStart;
        var end = mapTool.haveDataEnd;
        var result = await L.windUtil().getHourlyImages(start, end, product);
        var type = product.type;
        mapTool.historyResult[type] = result;
    },
    addLayerAndRestoreSettings: function () {
        // 强制恢复 minZoom 和 maxBounds 设置
        mapTool.map.options.minZoom = 5; // 设定你想要的最小缩放级别
        mapTool.map.setMaxBounds(L.latLngBounds([[18.1542, 73.5431], [53.5542, 135.0542]])); // 设定你想要的最大边界
    },
    fetchChinaBoundary:async function () {
        // 获取边界数据
        try {
            console.log("获取中国边界");
            const response = await fetch('data/china.json');
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }
            const data = await response.json();
            return data;
        } catch (error) {
            console.error('获取边界出错:', error);
            throw error; // 重新抛出错误以确保调用者可以处理它
        }
    }
    
};

/**
 * 将日期转换为本地 ISO 格式字符串，包括时区信息
 * @param {Date} date - 日期对象
 * @returns {string} - 本地 ISO 格式字符串
 */
function toLocalISOString(date) {
    function padZero(num) {
        return String(num).padStart(2, '0');
    }
    return [
        date.getFullYear(),
        '-',
        padZero(date.getMonth() + 1),
        '-',
        padZero(date.getDate()),
        'T',
        padZero(date.getHours()),
        ':',
        padZero(date.getMinutes()),
        ':',
        padZero(date.getSeconds())
    ].join('');
}

/**
 * 获取历史数据开始时间和结束时间
 * @returns {Array} - 历史数据开始时间和结束时间数组
 */
function getStartAndEndDay() {
    // let today = new Date();
    let today = new Date(2024, 11, 23);
    let firstDay = new Date(today);
    firstDay.setDate(today.getDate() - 10); // 设置为昨天
    let daysRange = [];
    let currentDate = new Date(firstDay)
    for (let i = 1; currentDate < today; i++) {
        let startOfDay = new Date(currentDate);
        startOfDay.setHours(0, 0, 0, 0);
        daysRange.push(startOfDay);
        currentDate.setDate(firstDay.getDate() + i);
    }

    return daysRange;
}

function showMessage(type="success",content=""){
    var option={
        "type":type,
        "position":"top-right",
        "showicon":true,
        "title":"提示",
        "content":content,
        "shadow":true,
        "shadowclickclose":true,
        "autoclose":true,
        "callback":function(data,obj){
            obj.ele.close(0)
        }
    }
    WfMsg(option)
}